// Function.prototype.myCall = function (context = window, ...args) {
//   let key = Symbol("key")
//   context.key = this;
//   let result = context.key(...args);
//   delete context.key
//   return result
// }



// Function.prototype.myCall = function (obj, ...args) {
//   let key = Symbol("key")
//   obj[key] = this
//   let result = obj[key](...args)
//   delete obj[key]
//   return result
// }
// Function.prototype.myApply = function (obj, args) {
//   let key = Symbol("key")
//   obj[key] = this
//   let result = obj[key](...args)
//   delete obj[key]
//   return result
// }
// Function.prototype.myBind = function (obj, ...args1) {
//   let key = this
//   return function (...args2) {
//     key.myApply(obj, [...args1, ...args2])
//   }
// }


// Function.prototype.myCall = function (context, ...args) {
//   let key = Symbol("key")
//   context.key = this
//   let result = context.key(...args)
//   delete context.key
//   return result
// }
// Function.prototype.myApply = function (context, ...args) {
//   let key = Symbol("key")
//   context.key = this
//   let result = context.key(args)
//   delete context.key
//   return result
// }

// Function.prototype.myBind = function (context, ...args1) {
//   let that = this
//   return function (...args2) {
//     that.myApply(context, ...args1, ...args2)
//   }
// }

// // 测试用例
// let a = "123123123"
// let obj = {
//   a: "12",
//   o: {
//   }
// }

// function demo(...args) {
//   console.log(this)
//   console.log(args);
// }




// demo.myBind(obj, 12, 23, 23)(1, 223, 23)



// function demo() {
//   Array.prototype.slice.call(arguments)
//   console.log(arguments);
// }


// demo(1, 23, 23, 2, 3, 23)







